package pro1_10.pro10;

/**
 * @author yaohuaiying
 * @create 2018-02-08 10:02
 *
 * 第10题（字符串）
翻转句子中单词的顺序。
题目：输入一个英文句子，翻转句子中单词的顺序，但单词内字符的顺序不变。
句子中单词以空格符隔开。为简单起见，标点符号和普通字母一样处理。
例如输入“I am a student.”，则输出“student. a am I”。

 思路
 网上搜了一圈 看到另一种思路
 大概是这样的过程
 1 am a student
 全部翻转
 tneduts a ma I
 对“ ”之前的翻转
 student a am I
 好吧实现一下
 toArray真的好用！
 **/
public class Main2 {
    public static void main(String[] args){
        String a = "I am a abc abcd student. abc";
        char[] chars = a.toCharArray();
        overTurn(chars,0,chars.length);
        for(char x : chars){
            System.out.print(x);
        }
        int j=0;
        for(int i=0; i<chars.length; i++){
            if(i == chars.length-1){
                overTurn(chars,j,chars.length);
            }
            if(chars[i] == ' '){
                overTurn(chars,j,i);
                j = i+1;
            }
        }
        System.out.println();
        for(char x : chars){
            System.out.print(x);
        }
    }

    /**
     * 这个方法才是关键  大概意思就是 翻转一个数组里面从begin 到 end 的元素 但是在上面调用的时候要注意 begin和end的输入
     * @param source
     * @param begin
     * @param end
     */
    public static void overTurn(char[] source, int begin, int end){
        int mid = (end+begin)/2;
        for(int i=begin; i< mid; i++){
            char temp = ' ';
            temp = source[i];
            source[i] = source[end + begin - i - 1];
            source[end + begin - i - 1] = temp;
        }
    }
}